﻿// ***********************************************************************
// Assembly         : AccesoDatos
// Author           : Diego
// Created          : 03-02-2014
//
// Last Modified By : Diego
// Last Modified On : 03-02-2014
// ***********************************************************************
// <copyright file="AD_Proveedores.cs" company="">
//     Copyright (c) . All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using Modelado.Modulos.ClasesModelado;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/// <summary>
/// The ClasesAccesoDatos namespace.
/// </summary>
namespace AccesoDatos.Modulos.ClasesAccesoDatos
{
    /// <summary>
    /// Class AD_Proveedores.
    /// </summary>
    public class AD_Proveedores
    { //CREA PROVEEDOR
        /// <summary>
        /// Crs the e_ proveedor.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="obj">The object.</param>
      public void CRE_Proveedor(SqlCommand comando, MOD_Proveedores obj)
      {
        try
            {
                string sp = "SP_CRE_PROVEEDORES";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                comando.Parameters.Add(new SqlParameter("@PRO_nombre", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@PRO_descripcion", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@PRO_telefono", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@PRO_direccion", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@PRO_email", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@PRO_NIT", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@PRO_codestado", SqlDbType.Int));
  


                comando.Parameters[0].Value = obj.PRO_nombre;
                comando.Parameters[1].Value = obj.PRO_descripcion;
                comando.Parameters[2].Value = obj.PRO_telefono;
                comando.Parameters[3].Value = obj.PRO_direccion;
                comando.Parameters[4].Value = obj.PRO_email;
                comando.Parameters[5].Value = obj.PRO_NIT;
                comando.Parameters[6].Value = obj.ESTPRO_codestado;
             


                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

      //eliminar proveedores 

      /// <summary>
      /// Des the l_proveedor.
      /// </summary>
      /// <param name="comando">The comando.</param>
      /// <param name="codigo">The codigo.</param>
      public void DEL_proveedor(SqlCommand comando, int codigo)
      {
          try
          {
              string sp = "SP_DEL_proveedor";

              comando.CommandType = CommandType.StoredProcedure;
              comando.CommandText = sp;
              comando.Parameters.Clear();


              comando.Parameters.Add(new SqlParameter("@PRO_CODPROVEEDOR", SqlDbType.Int));

              comando.Parameters[0].Value = codigo;

              comando.ExecuteNonQuery();


          }
          catch (Exception exc)
          {
              throw exc;
          }
      }

      /// <summary>
      /// Ups the d_ proveedor.
      /// </summary>
      /// <param name="comando">The comando.</param>
      /// <param name="obj">The object.</param>
      public void UPD_Proveedor(SqlCommand comando, MOD_Proveedores obj)
      {
          try
          {
              string sp = "SP_UPD_Proveedor";

              comando.CommandType = CommandType.StoredProcedure;
              comando.CommandText = sp;
              comando.Parameters.Clear();

              comando.Parameters.Add(new SqlParameter("@PRO_CODPROVEEDOR", SqlDbType.Int));
              comando.Parameters.Add(new SqlParameter("@PRO_NOMBRE", SqlDbType.VarChar));
              comando.Parameters.Add(new SqlParameter("@PRO_DESCRIPCION", SqlDbType.VarChar));
              comando.Parameters.Add(new SqlParameter("@PRO_TELEFONO", SqlDbType.VarChar));
              comando.Parameters.Add(new SqlParameter("@PRO_DIRECCION", SqlDbType.VarChar));
              comando.Parameters.Add(new SqlParameter("@PRO_EMAIL", SqlDbType.VarChar));
              comando.Parameters.Add(new SqlParameter("@PRO_NIT", SqlDbType.VarChar));
              comando.Parameters.Add(new SqlParameter("@PRO_CODESTADO", SqlDbType.Int));
             
              comando.Parameters[0].Value = obj.PRO_codproveedor;
              comando.Parameters[1].Value = obj.PRO_nombre;
              comando.Parameters[2].Value = obj.PRO_descripcion;
              comando.Parameters[3].Value = obj.PRO_telefono;
              comando.Parameters[4].Value = obj.PRO_direccion;
              comando.Parameters[5].Value = obj.PRO_email;
              comando.Parameters[6].Value = obj.PRO_NIT;
              comando.Parameters[7].Value = obj.ESTPRO_codestado;
              

              comando.ExecuteNonQuery();


          }
          catch (Exception exc)
          {
              throw exc;
          }
      }

      /// <summary>
      /// Ses the l_ grid_ proveedores.
      /// </summary>
      /// <param name="comando">The comando.</param>
      /// <returns>List{MOD_Proveedores}.</returns>
      public List<MOD_Proveedores> SEL_Grid_Proveedores(SqlCommand comando)
      {
          try
          {
              string sp = "SP_SEL_Grid_Proveedores";

              comando.CommandType = CommandType.StoredProcedure;
              comando.CommandText = sp;
              comando.Parameters.Clear();

              IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
              DataSet ds = new DataSet();
              da.Fill(ds);

              DataTable dt = ds.Tables[0];
              List<MOD_Proveedores> lista = new List<MOD_Proveedores>();

              for (int i = 0; i < dt.Rows.Count; i++)
              {
                  MOD_Proveedores obj = new MOD_Proveedores();
                  obj.PRO_codproveedor = Convert.ToInt32(dt.Rows[i]["PRO_CODPROVEEDOR"]);
                  obj.PRO_nombre = dt.Rows[i]["PRO_NOMBRE"].ToString();
                  obj.PRO_telefono = dt.Rows[i]["PRO_TELEFONO"].ToString();
                  obj.PRO_email = dt.Rows[i]["PRO_EMAIL"].ToString();
                  obj.ESTPRO_nombre = dt.Rows[i]["ESTPROV_NOMBRE"].ToString();

                  lista.Add(obj);
              }


              return lista;

          }
          catch (Exception exc)
          {
              throw exc;
          }
      }

      //trae info de Proveedor para editar
      /// <summary>
      /// Ses the l_ proveedor by identifier.
      /// </summary>
      /// <param name="comando">The comando.</param>
      /// <param name="PRO_CODPROVEEDOR">The pr o_ codproveedor.</param>
      /// <returns>MOD_Proveedores.</returns>
      public MOD_Proveedores SEL_ProveedorByID(SqlCommand comando, int PRO_CODPROVEEDOR)
      {
          try
          {
              string sp = "SP_SEL_ProveedorByID";

              comando.CommandType = CommandType.StoredProcedure;
              comando.CommandText = sp;
              comando.Parameters.Clear();

              comando.Parameters.Add(new SqlParameter("@PRO_CODPROVEEDOR", SqlDbType.Int));


              comando.Parameters[0].Value = PRO_CODPROVEEDOR;


              IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
              DataSet ds = new DataSet();
              da.Fill(ds);

              DataTable dt = ds.Tables[0];
              MOD_Proveedores obj = new MOD_Proveedores();

              for (int i = 0; i < dt.Rows.Count; i++)
              {
                  obj.PRO_codproveedor = Convert.ToInt32(dt.Rows[i]["PRO_CODPROVEEDOR"]);
                  obj.PRO_nombre = dt.Rows[i]["PRO_NOMBRE"].ToString();
                  obj.PRO_descripcion = dt.Rows[i]["PRO_DESCRIPCION"].ToString();
                  obj.PRO_telefono = dt.Rows[i]["PRO_TELEFONO"].ToString();
                  obj.PRO_direccion = dt.Rows[i]["PRO_DIRECCION"].ToString();
                  obj.PRO_email = dt.Rows[i]["PRO_EMAIL"].ToString();
                  obj.PRO_NIT = dt.Rows[i]["PRO_NIT"].ToString();
                  obj.ESTPRO_codestado = Convert.ToInt32(dt.Rows[i]["PRO_CODESTADO"]);
                  
              }

              return obj;


          }
          catch (Exception exc)
          {
              throw exc;
          }
      }

      /// <summary>
      /// Ses the l_ estproveedor.
      /// </summary>
      /// <param name="comando">The comando.</param>
      /// <returns>List{MOD_Proveedores}.</returns>
      public List<MOD_Proveedores> SEL_ESTPROVEEDOR(SqlCommand comando)
      {
          try
          {
              string sp = "SP_SEL_ESTPROVEEDOR";

              comando.CommandType = CommandType.StoredProcedure;
              comando.CommandText = sp;
              comando.Parameters.Clear();

              IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
              DataSet ds = new DataSet();
              da.Fill(ds);

              DataTable dt = ds.Tables[0];
              List<MOD_Proveedores> lista = new List<MOD_Proveedores>();

              for (int i = 0; i < dt.Rows.Count; i++)
              {
                  MOD_Proveedores obj = new MOD_Proveedores();
                  obj.ESTPRO_codestado = Convert.ToInt32(dt.Rows[i]["ESTPROV_CODESTADO"]);
                  obj.ESTPRO_nombre = dt.Rows[i]["ESTPROV_NOMBRE"].ToString();


                  lista.Add(obj);
              }


              return lista;

          }
          catch (Exception exc)
          {
              throw exc;
          }
      }

      //selecciona Proveedor x nit

      /// <summary>
      /// Ses the l_ proveedor by nit.
      /// </summary>
      /// <param name="comando">The comando.</param>
      /// <param name="PRO_NIT">The pr o_ nit.</param>
      /// <returns>System.Int32.</returns>
      public int SEL_ProveedorByNIT(SqlCommand comando, string PRO_NIT)
      {
          try
          {
              string sp = "SP_SEL_ProveedorByNIT";
              int cant_pro = 0;
              comando.CommandType = CommandType.StoredProcedure;
              comando.CommandText = sp;
              comando.Parameters.Clear();

              comando.Parameters.Add(new SqlParameter("@PRO_NIT", SqlDbType.VarChar));


              comando.Parameters[0].Value = PRO_NIT;


              IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
              DataSet ds = new DataSet();
              da.Fill(ds);

              DataTable dt = ds.Tables[0];
              MOD_Proveedores obj = new MOD_Proveedores();

              for (int i = 0; i < dt.Rows.Count; i++)
              {
                  cant_pro = Convert.ToInt32(dt.Rows[i]["PRO_CANT"]);


              }

              return cant_pro;


          }
          catch (Exception exc)
          {
              throw exc;
          }
      }

      /// <summary>
      /// Crs the e_ proveedor material.
      /// </summary>
      /// <param name="comando">The comando.</param>
      /// <param name="CodProveedor">The cod proveedor.</param>
      /// <param name="CodMaterial">The cod material.</param>
      public void CRE_ProveedorMaterial(SqlCommand comando, int CodProveedor,int CodMaterial )
      {
          try
          {
              string sp = "SP_CRE_PROVEEDORESMATERIAL";

              comando.CommandType = CommandType.StoredProcedure;
              comando.CommandText = sp;
              comando.Parameters.Clear();


              comando.Parameters.Add(new SqlParameter("@PROMAT_codproveedor", SqlDbType.VarChar));
              comando.Parameters.Add(new SqlParameter("@PROMAT_codmat", SqlDbType.VarChar));
              


              comando.Parameters[0].Value = CodProveedor;
              comando.Parameters[1].Value = CodMaterial;
              
              comando.ExecuteNonQuery();


          }
          catch (Exception exc)
          {
              throw exc;
          }
      }

      /// <summary>
      /// Ses the l_ grid_ materiales proveedores.
      /// </summary>
      /// <param name="comando">The comando.</param>
      /// <param name="codMaterial">The cod material.</param>
      /// <returns>List{MOD_Proveedores}.</returns>
      public List<MOD_Proveedores> SEL_Grid_MaterialesProveedores(SqlCommand comando, int codMaterial)
      {
          try
          {
              string sp = "SP_SEL_Grid_MaterialesProveedores";

              comando.CommandType = CommandType.StoredProcedure;
              comando.CommandText = sp;
              comando.Parameters.Clear();

              comando.Parameters.Add(new SqlParameter("@CODMATERIAL", SqlDbType.VarChar));


              comando.Parameters[0].Value = codMaterial;

              IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
              DataSet ds = new DataSet();
              da.Fill(ds);

              DataTable dt = ds.Tables[0];
              List<MOD_Proveedores> lista = new List<MOD_Proveedores>();

              for (int i = 0; i < dt.Rows.Count; i++)
              {
                  MOD_Proveedores obj = new MOD_Proveedores();
                  obj.PRO_codproveedor = Convert.ToInt32(dt.Rows[i]["PROMAT_CODPROVEEDOR"]);
                  obj.PRO_nombre = dt.Rows[i]["PRO_NOMBRE"].ToString();
                  

                  lista.Add(obj);
              }


              return lista;

          }
          catch (Exception exc)
          {
              throw exc;
          }
      }

      /// <summary>
      /// Ses the l_ proveedor material by i ds.
      /// </summary>
      /// <param name="comando">The comando.</param>
      /// <param name="codMaterial">The cod material.</param>
      /// <param name="codProveedor">The cod proveedor.</param>
      /// <returns>System.Int32.</returns>
      public int SEL_ProveedorMaterialByIDs(SqlCommand comando, int codMaterial, int codProveedor)
      {
          try
          {
              string sp = "SP_SEL_MaterialproveedorbyIDs";
              int cant_pro = 0;
              comando.CommandType = CommandType.StoredProcedure;
              comando.CommandText = sp;
              comando.Parameters.Clear();

              comando.Parameters.Add(new SqlParameter("@PROMAT_CODPROV", SqlDbType.Int));
              comando.Parameters.Add(new SqlParameter("@PROMAT_CODMAT", SqlDbType.Int));


              comando.Parameters[0].Value = codProveedor;
              comando.Parameters[1].Value = codMaterial;

              IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
              DataSet ds = new DataSet();
              da.Fill(ds);

              DataTable dt = ds.Tables[0];
              MOD_Proveedores obj = new MOD_Proveedores();

              for (int i = 0; i < dt.Rows.Count; i++)
              {
                  cant_pro = Convert.ToInt32(dt.Rows[i]["PROMAT_CANT"]);


              }

              return cant_pro;


          }
          catch (Exception exc)
          {
              throw exc;
          }
      }

      /// <summary>
      /// Des the l_ proveedor material.
      /// </summary>
      /// <param name="comando">The comando.</param>
      /// <param name="codProveedor">The cod proveedor.</param>
      /// <param name="codMaterial">The cod material.</param>
      public void DEL_ProveedorMaterial(SqlCommand comando, int codProveedor,int codMaterial)
      {
          try
          {
              string sp = "SP_DEL_ProveedorMaterial";

              comando.CommandType = CommandType.StoredProcedure;
              comando.CommandText = sp;
              comando.Parameters.Clear();


              comando.Parameters.Add(new SqlParameter("@PROMAT_CODPROV", SqlDbType.Int));
              comando.Parameters.Add(new SqlParameter("@PROMAT_CODMAT", SqlDbType.Int));

              comando.Parameters[0].Value = codProveedor;
              comando.Parameters[1].Value = codMaterial;

              comando.ExecuteNonQuery();


          }
          catch (Exception exc)
          {
              throw exc;
          }
      }
    }
}
